// Created by WXX on 2021/11/30 19:49
#include <iostream>
#include <stack>

using namespace std;

/**
 * 执行用时：0 ms, 在所有 C++ 提交中击败了100.00%的用户
 * 内存消耗：6 MB, 在所有 C++ 提交中击败了35.82%的用户
 */
class Solution {
public:
    int scoreOfParentheses(string s) {
        stack<int> stk;
        stk.push(0);

        for (auto c : s) {
            if (c == '(') {
                stk.push(0);
            } else {
                int t = stk.top(); stk.pop();
                if (!t) t = 1;
                else t *= 2;
                stk.top() += t;
            }
        }
        return stk.top();
    }
};

int main() {

    cout << Solution().scoreOfParentheses("()") << endl;  // 1
    cout << Solution().scoreOfParentheses("(())") << endl;  // 2

    return 0;
}
